{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1.5 决策理论"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "假设我们的输入向量为 $\\mathbf x$，目标向量为 $\\mathbf t$，对于回归问题，$\\mathbf t$ 是一个连续变量，对于分类问题，$\\mathbf t$ 是一个离散变量。联合分布 $p(\\mathbf{x, t})$ 反映了这些变量之间的不确定性关系，而使用训练数据求 $p(\\mathbf{x, t})$ 作为一种统计推断的过程，通常是十分困难的。\n",
    "\n",
    "考虑一个医学诊断的例子，假设我们对病人进行了 X 光检查，希望判断病人是否得了癌症。这里，输入 $\\mathbf x$ 是 X 光检查的图像，输入是一个标签 $t\\in \\{0,1\\}$，$t=0$ 表示 $\\mathcal C_1$类，有癌症，$t=1$ 表示 $\\mathcal C_2$类，没有癌症。\n",
    "\n",
    "我们要计算的分布为 $p(\\mathbf{x, t})$ 或者 $p(\\mathbf{x}, \\mathcal{C}_k)$。\n",
    "\n",
    "给定一个输入 $\\mathbf x$，我们需要判断它属于每一类的概率，即计算后验概率\n",
    "\n",
    "$$\n",
    "p(\\mathcal C_k|\\mathbf x)=\\frac{p(\\mathbf x|\\mathcal C_k) p(\\mathcal C_k)}{p(\\mathbf x)}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.5.1 最小错误率决策 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "假设我们的目标是最小化发生错误的概率。\n",
    "\n",
    "我们需要决定一个准则来决定每个 $\\mathbf x$ 所属的类别。这个准则将空间分成了很多个区域 $\\mathcal R_k$，每个区域代表一类，表示落在这个区域的点都被标记成了第 $k$ 类。这些区域的边界被叫做决策面（`decision boundaries`）。注意，这些决策区域并不一定需要联系，可能是多个区域的组合成为一类的决策区域。\n",
    "\n",
    "我们的例子中，错误发生有两种情况：属于 $\\mathcal C_1$ 被分为 $\\mathcal C_2$ 和属于 $\\mathcal C_2$ 被分为 $\\mathcal C_1$，因此错误率为\n",
    "\n",
    "$$\n",
    "p(mistake) = p(\\mathbf x\\in \\mathcal R_1, \\mathcal C_2) + p(\\mathbf x\\in \\mathcal R_2, \\mathcal C_1)\n",
    "= \\int_{\\mathcal R_1} p(\\mathbf x, \\mathcal C_2) d\\mathbf x + \\int_{\\mathcal R_2} p(\\mathbf x, \\mathcal C_1) d\\mathbf x\n",
    "$$\n",
    "\n",
    "为了最小化错误率，我们需要将 $x$ 标记为概率最大的那个类，即如果 $p(\\mathbf x, \\mathcal C_1)>p(\\mathbf x, \\mathcal C_2)$，那么将 $\\mathbf x$ 标记为 $\\mathcal C_1$\n",
    "\n",
    "从乘法法则我们知道 $p(\\mathbf x, \\mathcal C_k)=p(\\mathcal C_k|\\mathbf x)p(\\mathbf x)$，而 $p(\\mathbf x)$ 是公共项，因此我们相当于将 $\\mathbf x$ 标记为 $p(\\mathcal C_k|\\mathbf x)$ 最大的类。\n",
    "\n",
    "对于多类问题，最小化错误率决策可以看出最大化正确率决策，即\n",
    "\n",
    "$$\n",
    "p(correct) = \\sum_{k=1}^K p(\\mathbf x\\in \\mathcal R_k, \\mathcal C_k) = \\sum_{k=1}^K \\int_{\\mathcal R_k} p(\\mathbf x, \\mathcal C_k) d\\mathbf x\n",
    "$$\n",
    "\n",
    "下图了说明最小化错误率的原理。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f814130ca10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import scipy as sp\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy.stats import norm\n",
    "\n",
    "%matplotlib inline\n",
    "\n",
    "xx = np.linspace(-6, 6, 200)\n",
    "yy_1 = 2 * norm.pdf(xx, loc= -2) + norm.pdf(xx, loc = 2)\n",
    "yy_2 = 1.5 * norm.pdf(xx, loc = 2) \n",
    "\n",
    "fig, ax = plt.subplots(figsize=(8, 5))\n",
    "ax.plot(xx, yy_1, 'k', xx, yy_2, 'k', linewidth=1.5)\n",
    "ax.set_ylim(-.2, 1.2)\n",
    "ax.set_xticks([])\n",
    "ax.set_yticks([])\n",
    "ax.plot([0.33, 0.33], [0, 1], 'k--',linewidth=1.5)\n",
    "ax.plot([2, 2], [0, 1], 'k-', linewidth=1.5)\n",
    "ax.fill_between(xx[xx < 2], yy_2[xx <= 2], color=\"salmon\")\n",
    "ax.fill_between(xx[xx < 2], np.min(np.vstack([yy_1[xx < 2], yy_2[xx < 2]]), axis=0), color=\"palegreen\")\n",
    "ax.fill_between(xx[xx > 2], yy_1[xx > 2], color=\"royalblue\")\n",
    "ax.text(-4, 0.8, r\"$p(x, \\mathcal{C}_1)$\", fontsize=\"xx-large\")\n",
    "ax.text(2.7, 0.6, r\"$p(x, \\mathcal{C}_2)$\", fontsize=\"xx-large\")\n",
    "ax.text(0.15, 1.04, r\"$x_0$\", fontsize=\"xx-large\")\n",
    "ax.text(1.9, 1.03, r\"$\\hat{x}$\", fontsize=\"xx-large\")\n",
    "ax.annotate(\"\",\n",
    "            xy=(-6, -0.07), xycoords='data',\n",
    "            xytext=(2, -0.07), textcoords='data',\n",
    "            arrowprops=dict(arrowstyle=\"<->\",\n",
    "                            connectionstyle=\"arc3\"), \n",
    "            )\n",
    "ax.annotate(\"\",\n",
    "            xy=(2, -0.07), xycoords='data',\n",
    "            xytext=(6, -0.07), textcoords='data',\n",
    "            arrowprops=dict(arrowstyle=\"<->\",\n",
    "                            connectionstyle=\"arc3\"), \n",
    "            )\n",
    "ax.text(-2.2, -0.17, '$\\mathcal{R}_1$', fontsize=\"xx-large\")\n",
    "ax.text(3.8, -0.17, '$\\mathcal{R}_2$', fontsize=\"xx-large\")\n",
    "\n",
    "ax.spines['right'].set_color('none')\n",
    "ax.spines['top'].set_color('none')\n",
    "\n",
    "ax.spines['bottom'].set_position(('data',0))\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如图所示，假设决策分界面为 $x=\\hat{x}$，在决策面左边的点 $x\\geq \\hat x$ 分为 $\\mathcal C_1$，右边的点为 $\\mathcal C_2$ 类。从图中可以看到，彩色的部分都是错误的区域。绿色部分和红色部分表示属于 $\\mathcal C_2$ 被错分为 $\\mathcal C_1$ ，蓝色部分表示属于 $\\mathcal C_1$ 被错分为 $\\mathcal C_2$。\n",
    "\n",
    "如果我们改变 $\\hat x$ 的值，红色和绿色的部分的总和始终保持不变，而变化的是红色的部分的面积。从图中可以看出，当决策面 $x=x_0$ 即两条概率曲线的交点时，红色部分的面积为 `0`，此时对应的错误率（彩色面积总和）最小。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.5.2 最小风险决策"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "在很多情况下，我们的目标要更为复杂。\n",
    "\n",
    "对于癌症检测的问题，如果一个没有癌症的患者被判断得了癌症，那么结果很可能只是多进行一系列进一步检查以确认；但是如果一个有癌症的患者被判断没有癌症，那么结果很可能是因为没有得到及时治疗而死亡。因此，这两种错误的结果是不一样的，在癌症的样例下，我们更希望第二种错误的样例要更少一些，即使第一种错误会相对增加。\n",
    "\n",
    "为了量化这种目标，我们引入损失函数（`loss (cost) function`），用来衡量每一种类型的决策所带来的损失。这样我们的目标就变成了最小化损失函数，具体来说，对于一个新来的 $\\mathbf x$，其类别为 $\\mathcal C_k$，我们的决策将其分为 $\\mathcal C_j$ 类（$j$ 可以与 $k$ 相等），我们用 $L_{kj}$ 表示这种决策的损失，例如，在癌症的例子中，我们的 $L$ 矩阵可以被表示为：\n",
    "\n",
    "| | $\\mathcal C_1$ cancer | $\\mathcal C_2$ normal |\n",
    "| --- | --- | --- |\n",
    "|**$\\mathcal C_1$ cancer** | 0 | 1000 |\n",
    "|**$\\mathcal C_2$ normal** | 1 | 0 |\n",
    "\n",
    "表示如果一个有癌症的被判做没有的损失是 1000，而没有癌症的判做癌症的损失为 1。\n",
    "\n",
    "为了优化目标函数，我们需要知道给定 $\\mathbf x$ 的真实类别，但是这个类别不是确定的，而是由分布 $p(\\mathbf x, \\mathcal C_k)$ 所决定的，因此，我们转而优化损失的期望：\n",
    "\n",
    "$$\n",
    "\\mathbb E[L] = \\sum_k \\sum_j \\int_{\\mathcal R_j} L_{kj} p(\\mathbf x, \\mathcal C_k) d\\mathbf x\n",
    "$$\n",
    "\n",
    "我们的目标是选择决策区域 $\\mathcal R_j$ 使得期望最小化。\n",
    "\n",
    "换句话说，我们对 $\\mathbf x$ 决策会使得 $\\sum_{k} L_{kj} p(\\mathbf x, \\mathcal C_k)$ 最小，即 $\\sum_{k} L_{kj} p(\\mathcal C_k | \\mathbf x)$ 最小。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.5.3 拒绝选项"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当有多个 $p(\\mathcal C_k | \\mathbf x)$ 值十分接近时，决策将变得十分困难。\n",
    "\n",
    "在某些情况下，我们可以选择拒绝做出判断，即拒绝选项（`reject option`）。例如在癌症的例子中，如果机器对决策是否有癌症有困难，那么更好的方法是不做出决策，而让人类专家去处理。\n",
    "\n",
    "为了达到这个目的，我们可以设定一个阈值 $\\theta$，当最大的一个 $p(\\mathcal C_k | \\mathbf x)$ 值小于 $\\theta$ 时，拒绝做出判断。\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f8158266ed0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def sigmoid(x):\n",
    "    return np.exp(x) / (1 + np.exp(x))\n",
    "\n",
    "xx = np.linspace(-6, 6, 200)\n",
    "yy = sigmoid(xx)\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(8, 5))\n",
    "ax.plot(xx, yy, 'r', xx, 1 - yy, 'b', linewidth=1.5)\n",
    "ax.set_xticks([])\n",
    "ax.set_ylim([-0.15, 1.15])\n",
    "ax.set_yticks([0, 0.85, 1])\n",
    "ax.set_yticklabels([\"$0.0$\", r'$\\theta$', \"$1.0$\"], fontsize=\"xx-large\")\n",
    "\n",
    "ax.plot([-1.73, -1.73], [0, 0.85], \"g\")\n",
    "ax.plot([1.73, 1.73], [0, 0.85], \"g\")\n",
    "ax.plot([-6, 6], [0.85, 0.85], \"g--\")\n",
    "\n",
    "ax.spines['right'].set_color('none')\n",
    "ax.spines['top'].set_color('none')\n",
    "\n",
    "ax.spines['bottom'].set_position(('data',0))\n",
    "\n",
    "ax.annotate(\"\",\n",
    "            xy=(1.73, -0.05), xycoords='data',\n",
    "            xytext=(-1.73, -0.05), textcoords='data',\n",
    "            arrowprops=dict(arrowstyle=\"<->\",\n",
    "                            connectionstyle=\"arc3\"))\n",
    "\n",
    "ax.text(-5.5, 1.05, '$p(\\mathcal{C}_1|x)$', fontsize=\"xx-large\")\n",
    "ax.text(4.5, 1.05, '$p(\\mathcal{C}_2|x)$', fontsize=\"xx-large\")\n",
    "ax.text(-1.5, -0.15, \"reject region\", fontsize=\"xx-large\")\n",
    "ax.text(5.5, -0.1, \"$x$\", fontsize=\"xx-large\")\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果设置 $\\theta = 1$，那么所有的区域都会被拒绝。如果设置 $\\theta < 1/K$，其中 $K$ 是类别数，那么所有的区域都不会被拒绝。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.5.4 推断和决策"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们之前事实上将分类问题分成了两部分：\n",
    "- 推断部分：使用训练数据建立一个计算 $p(\\mathcal{C}_k|\\mathbf x)$ 的模型\n",
    "- 决策部分：使用这些后验概率进行决策\n",
    "\n",
    "另一种直接的方法是学习一个将输入 $\\mathbf x$ 直接映射为决策的函数，这样的函数叫做判别函数（`discriminant function`）。\n",
    "\n",
    "事实上，我们有三类不同的方法来解决分类问题，按复杂度从高到低排列如下：\n",
    "\n",
    "1. 建模计算 $p(\\mathbf x, \\mathcal{C}_k)$，再决策，产生式模型（`generative models`）\n",
    "- 建模计算 $p(\\mathcal{C}_k|\\mathbf x)$，再决策，判别式模型（`discriminative models`）\n",
    "- 直接使用判别函数 $f(\\mathbf x)$ 映射到标签类别上，例如二类问题中 $f=0$ 表示 $\\mathcal C_1$， $f=1$ 表示 $\\mathcal C_2$。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 比较"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "方法 1 复杂度最高，通常 $\\mathbf x$ 是很高维的数据，因此我们需要很多的数据来保证分布的正确性；$p(\\mathcal C_k)$ 通常只是简单的使用训练集的分布决定。其好处在于可以得到 $p(\\mathbf x)$，来判断一个新数据点 $\\mathbf x$ 在当前模型下的概率，即离群点检测（`outlier detection`）。\n",
    "\n",
    "如果我们只关注分类决策，那么方法 2 是一个好的选择，因为不需要计算 $p(\\mathbf x)$，计算量减少了很多；\n",
    "\n",
    "方法 3 直接将决策并入了判别函数，比方法 2 更简单。但是我们不再有后验概率的信息。\n",
    "\n",
    "有后验概率的好处在于：\n",
    "- 最小风险决策\n",
    "- 拒绝选项\n",
    "- 补偿先验概率不均衡的问题\n",
    "- 结合多个模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.5.5 回归问题的损失函数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对于回归问题，设输入为 $\\mathbf x$，目标值为 $t$，模型输出为 $y(\\mathbf x)$，我们的损失函数定义为 $L(t, y(\\mathbf x))$，则其期望为：\n",
    "\n",
    "$$\n",
    "\\mathbb E[L] = \\iint L(t, y(\\mathbf x)) p(\\mathbf x, t)d\\mathbf xdt\n",
    "$$\n",
    "\n",
    "使用平方误差 $L(t, y(\\mathbf x)) = \\{t-y(\\mathbf x)\\}^2$，则损失函数的期望为\n",
    "\n",
    "$$\n",
    "\\mathbb E[L] = \\iint \\{t-y(\\mathbf x)\\}^2 p(\\mathbf x, t)d\\mathbf xdt\n",
    "$$\n",
    "\n",
    "对 $y(\\mathbf x)$ 最小化（变分法，参见附录 D）：\n",
    "\n",
    "$$\n",
    "\\frac{\\delta \\mathbb E[L]}{\\delta y(\\mathbf x)}= 2 \\int \\{y(\\mathbf x)-t\\} p(\\mathbf x, t)dt = 0\n",
    "$$\n",
    "\n",
    "我们有\n",
    "\n",
    "$$\n",
    "y(\\mathbf x) = \\frac{\\int tp(\\mathbf x,t) dt}{p(\\mathbf x)} \n",
    "= \\int tp(t|\\mathbf x) dt = \\mathbb E_t[t|\\mathbf x]\n",
    "$$\n",
    "\n",
    "即 $y(\\mathbf x)$ 是给定 $\\mathbf x$ 下 $t$ 的条件期望，又叫回归函数（`regression function`）。\n",
    "\n",
    "在多元目标函数的情况下，类似的有 $\\mathbf{y(x)} = \\mathbb E_t[\\mathbf{t|x}]$。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nuXJlkpOTAUhLS6NatWqu59i7dy/r1q3j8mIMoTp48CBNmjQBYNu2bbRs2ZJ69eoxcOBAkpOT2bt3\nL08//TRDhw5l0KBBfPjhh2zdutX1XDVq1MAYw549e1yfl+BTQEjxLFkCF11kp/auXm13qqlSxeuq\nwlZOjl1lZORIO4HcX+655x6qVKnC8uXLj+hgTktLY+fOncTGxgLg8/moUMQ8lJSUFKpXr8555513\nwusNGjTo0N+TkpLo2LEjAPXr16dx48YkJibS9LDhWK1atWLRokWu54qKisIYg6NfOEKGAkKOLy3N\nrvPQv79tLE9IgDPP9LqqsPfMM7Yfv3//wJw/JSXliIBITEykQoUKdOjQAYDatWsXOachOTmZdu3a\nleh6ubm5rFy58phRT9u3bz/iTuXUU0/lhx9+cD1Heno6FStWpJaWqQ0ZCghxZ4xdM+mii+zCed9+\na2c/S5l9951demrKlMC0zv30009kZGQcMUJp5syZ3HzzzTQsaMuqX78+6enprq9fvnw57du3B+D7\n778vcuhpfn4+S5cuBWDFihWA7WgG2LVrF++++y4ZGRlUrlz50Guio6PZu/eYLeUBOwmvrrbGCykK\nCDnW9u1www0wejR8/LGd2qslRP3mkUfspj+BGs66bNkyfD7foQBYuHAhqampTJgw4dAx5557LtHR\n0ezYseOY1+/atYvzzz8fYwzTpk2je/furteZPHky119/PdnZ2cybN4+aNWtSsaIdGPnKK6/QrVs3\nYmNjj9goKTs7mxpFDNVKTU2lVatWpX7f4n8a5ip/MMbu4DZoENx/v21Oio72uqqIkpwMGzfC3LmB\nu0ZKSgp9+/blpZdeIiYmhq1bt5KUlMRpp512xHFdunQhOTmZXr16HfH44MGDee+990hOTub+++93\nXYYDoEOHDvTo0YNRo0bRo0cPqlatyiOPPEJMTAxxcXFUq1aNs88+m5UrVx56TXp6OucUMas+OTmZ\nrl27lvHdi18VNbwp3L7QMNey2bnTmFtuMeaCC4xZtcrraiJO4c/nTTcZ8+qrgb1Ws2bNzPTp0094\n3NKlS83NN99conMfPcz1RPbv32/OP//8Q99fdtllZtOmTcccl5OTY5o0aWIyMzNLdH4pOzTMVY5r\n0SJo3hzOOgtWrQLd5gfEzz/bO4giVrfwi8zMTL799lv+/Oc/n/DYjh07cuDAATZu3BiwemJiYhg6\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f815821a090>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "xx = np.linspace(-0.9, 0.9, 100)\n",
    "yy = 4 * xx - np.sin(xx * np.pi)\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "ax.plot(xx, yy, color=\"red\")\n",
    "\n",
    "ax.set_xlim(-1, 1)\n",
    "ax.set_ylim(-4, 4)\n",
    "\n",
    "ax.set_xticks([0])\n",
    "ax.set_xticklabels([r'$x_0$'], fontsize=\"xx-large\")\n",
    "ax.set_yticks([0])\n",
    "ax.set_yticklabels([r'$y(x_0)$'], fontsize=\"xx-large\")\n",
    "\n",
    "xx = np.linspace(-4, 4, 100)\n",
    "yy = norm.pdf(xx, scale=0.5) / 5\n",
    "\n",
    "ax.plot([-1, 0], [0, 0], \"g--\")\n",
    "ax.plot([0, 0], [-4, 4], \"k\")\n",
    "ax.plot(yy, xx)\n",
    "\n",
    "ax.text(0.15, -1, r'$p(t|x_0)$', fontsize=\"xx-large\")\n",
    "ax.text(0.5, 3, r'$y(x)$', fontsize=\"xx-large\")\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们也可以使用另一种方式得到这个结果。我们对平方项进行展开：\n",
    "\n",
    "$$\n",
    "\\begin{align}\n",
    "\\{y(\\mathbf x)-t\\}^2\n",
    "& = \\{y(\\mathbf x)-\\mathbb E[t|\\mathbf x]+\n",
    "\\mathbb E[t|\\mathbf x]-t\\}^2 \\\\\n",
    "& = \\{y(\\mathbf x)-\\mathbb E[t|\\mathbf x]\\}^2 + 2\\{y(\\mathbf x)-\\mathbb E[t|\\mathbf x]\\}\\{\\mathbb E[t|\\mathbf x]-t\\} + \\{\\mathbb E[t|\\mathbf x]-t\\}^2 \\\\\n",
    "\\end{align}\n",
    "$$\n",
    "\n",
    "带入期望公式，并对 $t$ 进行积分：\n",
    "\n",
    "$$\n",
    "\\mathbb E[L] = \n",
    "\\int \\{y(\\mathbf x)-\\mathbb E[t|\\mathbf x]\\}^2 p(\\mathbf x) d\\mathbf x\n",
    "+ \\int \\text{var}[t|\\mathbf x]~p(\\mathbf x) d\\mathbf x\n",
    "$$\n",
    "\n",
    "注意到 $y(x)$ 只出现在第一部分，因此，我们为了使其最小，应该有 \n",
    "\n",
    "$$\n",
    "y(\\mathbf x)=\\mathbb E[t|\\mathbf x]\n",
    "$$\n",
    "\n",
    "回归问题通常也有三种方式：\n",
    "\n",
    "1. 建模 $p(\\mathbf x, t)$，然后计算 $p(\\mathbf t|x)$，最后得到 $y(\\mathbf x)=\\mathbb E[t|\\mathbf x]$\n",
    "- 建模 $p(\\mathbf t|x)$，得到 $y(\\mathbf x)=\\mathbb E[t|\\mathbf x]$\n",
    "- 直接对回归函数 $y(x)$ 建模。\n",
    "\n",
    "有些情况下，平方误差给出的结果可能会很差。除了平方误差，我们还可以使用其他误差函数，例如 Minkowski 误差（平方误差是 $q=2$ 的特殊情况）：\n",
    "\n",
    "$$\n",
    "\\mathbb E[L_q] = \\iint \\left|y(\\mathbf x)-t\\right|^q p(\\mathbf x, t)d\\mathbf xdt\n",
    "$$\n",
    "\n",
    "有如下的结论：\n",
    "\n",
    "- $q=2$，最小值在条件均值处取到\n",
    "- $q=1$，最小值在条件中位数处取到\n",
    "- $q\\rightarrow 0$，最小值在条件众数处取到\n",
    "\n",
    "将 $y(\\mathbf x)$ 看作独立变量，使用变分法对 $y(\\mathbf x)$ 求导，驻点应该满足：\n",
    "\n",
    "$$\n",
    "\\int q \\left|y(\\mathbf x)-t\\right|^{q-1} \\text{sign}(y(\\mathbf x)-t) p(\\mathbf x, t) dt = 0\n",
    "$$\n",
    "\n",
    "两边同时除以 $p(\\mathbf x)$，有\n",
    "\n",
    "$$\n",
    "\\int_{-\\infty}^{y(\\mathbf x)} \\left|y(\\mathbf x)-t\\right|^{q-1} p(t|\\mathbf x) dt = \n",
    "\\int_{y(\\mathbf x)}^{\\infty} \\left|y(\\mathbf x)-t\\right|^{q-1} p(t|\\mathbf x) dt\n",
    "$$\n",
    "\n",
    "当 $q = 1$ 时，我们有\n",
    "\n",
    "$$\n",
    "\\int_{-\\infty}^{y(\\mathbf x)} p(t|\\mathbf x) dt = \n",
    "\\int_{y(\\mathbf x)}^{\\infty} p(t|\\mathbf x) dt\n",
    "$$\n",
    "\n",
    "所以 $y(x)$ 是条件中位数。\n",
    "\n",
    "当 $q\\rightarrow 0$ 时，除了 $t=y(\\mathbf x)$ 附近的一小块区域趋近于 0，其他的 $\\left|y(\\mathbf x)-t\\right|^{q} \\rightarrow 1$，因此 $\\mathbb E[L]$ 趋近于 $1$，减去 $t=y(\\mathbf x)$ 附近的一小块区域，因此，对于任意 $\\mathbf x$ 值，我们选择 $y(x)$ 取最大的 $p(t|\\mathbf x)$ 值能使得减少的值最大。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nG27Q448/rg8//FDHHntsNkdGjFEdCQnnayfW119/rcLCQu2111668847NXjwYC1dulQHHXSQ79GQ\nbZ562WVRHUGiffHFF+rVq5fq16+vJk2a6Nprr9XChQuVl5en0aNHZ/z4mzZt0uTJk9W3b98fQ7Yk\ntWnTRp06ddJzzz2X9mOXLvp77bVXxnMCSFG/ftKpp0rXXed+WSMUQa/ZkrT//vuzruaKESOkTz6R\nHnnE9yTVRnUEsbFmzRq1a9dORUVFGjRokJo1a6bx48erf//+MuXe5GSt1dq1a6v1uHXq1FG9evUk\nSR999JG2b9+uk08+ucL92rZtqxkzZmjlypVq1qzZHh93y5Yt2rx5szZu3Kh3331X//u//6vevXvr\nyCOPrNZcALJs2DB3vvZTT3G+dgjCWLORQ+bPl+64w52XHfFedlkEbcTG/fffr1WrVmny5Mnq2rWr\nJOn6669Xhw4dKtx32bJlatmy5R4f0xij/v37a+TIkZKklStXyhij5s2bV7hvabhesWJFtYL2Aw88\noHvuuefH/92vXz89+eSTe/w6AAHJz3dvnurQgb52CMJYs5EjYnBe9u4QtBEbkyZN0uGHH/7jgi1J\neXl5GjRokN5+++1d7rvffvtp+vTp1XrcsqF5y5YtkqTatWtXuF+dOnV2uc+e9O/fX+3atdOaNWs0\nY8YM/e1vf1NRUZFefPHFan09gAC0bi09+KD7pU1fO1BhrNnIAdZKV18tdewoXXKJ72lSRtBGbHz5\n5Zfq1q1bhdsPr+TZbe3atXXGGWek/D3qlrwctW3btgqf27p16y732ZMWLVqoRYsWkqS+ffvq8MMP\n14033qhx48apb9++Kc8GIEv69ZNmzXJ9bc7XDkwYazZywIgR0uLF7rzsGCJoI5GKi4u1evXqat23\nbt26KigokOR2Sqy1WrlyZYX7ld6W7m7KpZdeqhtvvFHvvPMOQRvwjb52pKS7ZiPhYtrLLougjdho\n0aKFPvvsswq3L1mypMJty5cvT6vv16ZNG+21116aO3eurr766l3uO3fuXO27776V9rero3RHvPyb\ngAB4QF87cGGs2UiwoqLY9rLLImgjNnr16qWHHnpIU6ZM+fHlyJ07d2ro0KEVwmu6fb/69eurR48e\nGj9+vO699141bdpUkvTxxx9r5syZGjhw4C5f+80332j9+vU69NBDVaNGDUnS6tWrK72ozV/+8hcZ\n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\n7ETYuJGgHQCCdtSVnj5C0Nb999+vVatWafLkyeratask6frrr1eHDh0q3HfZsmVq2bLlHh/TGKP+\n/ftr5MiRVd7vj3/8o/Ly8nTJJZekNzxSN2mS9MgjvqcAwlW/vrR8ue8pssLnml2ZlStXyhij5s2b\nV/hcabhesWJF7gbtTZvoaAeAoB11Z58tnXOONGRIzl+wY9KkSTr88MN/XLAlKS8vT4MGDdLbb7+9\ny333228/TZ8+vVqPu6dF9cknn9Szzz6rm2++WUcddVTqgyN1K1ZIX33lThwBckmCqiO+1uzd2bJl\niySpdu3aFT5Xp06dXe6Tk6iOBIKgHXVt2kg//OCO+mvVyvc0Xn355Zfq1q1bhdsPP/zwCrfVrl1b\nZ5xxRsbfc8KECbr++uvVp08f3X///Rk/HqrplVek7t2lmixRyDEJCto+1uyq1K1bV5K0bdu2Cp/b\nunXrLvfJSVRHAsFvsagzxtVHXn4554N2KoqLi6t9VFPdunVVUFBQ4fapU6fq4osvVocOHfT8888r\nL4/3Dofm5ZclajrIRTl66kg21uw9adasmay1WrlyZYXPld6Ws7URiepIQAjacXD22dK990q33OJ7\nEq9atGihzz77rMLtS5YsqXDb8uXLM+r7vfHGGzr33HN13HHHacKECapVq1b6gyM1mza5NwBn6UQC\nIFYStKMd5ppdHW3atNFee+2luXPn6uqrr97lc3PnztW+++5baX87Z1AdCQRBOw7OOMPt7n37rTuJ\nJEf16tVLDz30kKZMmfLjy5E7d+7U0KFDK7yDPZO+33vvvaezzz5bhx12mCZPnqz8/Pzs/AFQPdOm\nSSedJDVu7HsSIHwJCtphrdnVVb9+ffXo0UPjx4/Xvffeq6ZNm0qSPv74Y82cOVMDBw5M63ETY9Om\nnM4YQSFox0Ht2u7UkVdeka680vc03txyyy165plndN5552nQoEFq3ry5xo0bV+mbV9Lt+y1btkzd\nu3fX1q1b1a9fP00qd8Ggpk2bqkuXLmn/GVANEydKffr4ngLwI0HVkTDWbElauHChJk6cKEl66623\nZK3Vo48+qkaNGqlRo0a7BOjBgwerbdu2ateunW644QZt3bpVQ4YMUdOmTfX73/8+vT9oUnBlyGBY\na2P94f4IOWD0aGv79PE9hXeff/657dmzp61fv74tLCy01157rV24cKE1xtinn34648efNWuWzcvL\n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\nHay1iyXdIunqbA+JNBnjdrWfecb3JMhFzzxDbQTIBEEbQSNoB666V4Z801p7qKQD5MJ0XUnXS1po\njFltjPmHMeYmuUuzH1jFQyFsl10mjR0rbd/uexLkko8+ktauldq39z0JEF+lF60BgkLQDlxKHW1r\n7dfW2rGS3rLWHiepsaRfSvpYUi9JD0h6Ld1hjDH1jDF3G2MmGmNWGmOKjTEj0308yB2tdvjh0mtp\n/98CpG7MGOnyy6U83m+dZKzZAWNHG0EjaAcu3beZjpMka+0GSVNKPrKhUNL/SFop6X258I5M9esn\njR4t9e7texLkgh9+cLWRGTN8T4LgsWYHiaCNoBG0A5dW0LbWTsz2ICVWSmpurf265ASTHQF9n9xy\n4YXS737nXsrfO91rDwHVNH26dOCB0hFH+J4EwWPNDhJBG0EjaAcuUq/rWmt3WGu/9j1H4jRs6I5Y\nGzvW9yTIBaNHu1dRkHis2QEjaCNoBO3ARSpoI0D9+klPP+17CiRdUZH06qvSRRf5ngSIP4I2gkbQ\nDhxBO1d07SotXSp99pnvSZBk48dLnTpJhYW+JwHij6CNoBG0A5dx0DbGsE0aBzVrujONx4zxPQmS\n7OmnqY0A2VIatLm6L4JC0A5cNi5uv28WHiMjd99994//vWPHjurYsaO3WSKtf3938sg993DsGrLv\n3/+WFi2Sevb0PUmkzZo1S7NmzfI9hles2dVUp45Uo4a0aZNUv77vaZBE69ZJjRv7niLSMl2zjc3w\nmbIx5lVrbY+MHqTyxy19B/soa+2AKu5nM/0z5JTjj5ceeEDq0sX3JEia//kf19EeMsT3JLFijJG1\n1vieI1Os2QFp0cIdlXnwwb4nQRI1aya9/77UvLnvSWIj1TWbbc1cM2CANJLrSSDLdu6URo2SrrzS\n9yRAsjRtKq1a5XsKJFFxsbR6tdSkie9JEo2gnWsuvdSdCrFune9JkCSvvy7tu690zDG+JwGShaCN\noKxdKzVoINWq5XuSRMtGRzurjDG/kdRQUo2Sm44xxtxe8t8nWGs/9jNZQuy9tztT++9/l66/3vc0\nSIqRI9nNzlGs2QHbd1+CNoKxapV7IodARS5oS7pJ0kEl/91KOrbkQ5KWS2LRztSAAdIf/kDQRnas\nXSu99pr0+OO+J4EfrNlBYkcbQSFohyJyQdta29L3DInXubP07bfSggW81I/M/f3v0llnuVdLkHNY\n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\nQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f815821a110>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(2, 2, figsize=[12, 8])\n",
    "axes = axes.flatten()\n",
    "qs = [0.3, 1, 2, 10]\n",
    "\n",
    "xx = np.linspace(-2, 2, 101)\n",
    "\n",
    "for q, ax in zip(qs, axes):\n",
    "    ax.plot(xx, np.abs(xx) ** q, 'r')\n",
    "    ax.set_ylim(0, 2)\n",
    "    ax.set_xticks([-2, -1, 0, 1, 2])\n",
    "    ax.set_xticklabels([-2, -1, 0, 1, 2], fontsize=\"xx-large\")\n",
    "    ax.set_yticks([0, 1, 2])\n",
    "    ax.set_yticklabels([0, 1, 2], fontsize=\"xx-large\")\n",
    "    if q in (10, 2):\n",
    "        ax.set_xlabel(\"$y-t$\", fontsize=\"xx-large\")\n",
    "    if q in (2, 0.3):\n",
    "        ax.set_ylabel(\"$|y-t|^q$\", fontsize=\"xx-large\")\n",
    "    ax.text(-.4, 1.5, \"q={}\".format(q), fontsize=\"xx-large\")\n",
    "    \n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
